home *** CD-ROM | disk | FTP | other *** search
-
-
- /* upper design bounds */
-
- #define MAX_MAP_HULLS 4
-
- #define MAX_MAP_MODELS 256
- #define MAX_MAP_BRUSHES 4096
- #define MAX_MAP_ENTITIES 1024
- #define MAX_MAP_ENTSTRING 65536
-
- #define MAX_MAP_PLANES 8192
- #define MAX_MAP_NODES 32767 /* because negative shorts are contents */
- #define MAX_MAP_CLIPNODES 32767 /* */
- #define MAX_MAP_LEAFS 32767 /* */
- #define MAX_MAP_VERTS 65535
- #define MAX_MAP_FACES 65535
- #define MAX_MAP_MARKSURFACES 65535
- #define MAX_MAP_TEXINFO 4096
- #define MAX_MAP_EDGES 256000
- #define MAX_MAP_SURFEDGES 512000
- #define MAX_MAP_MIPTEX 0x200000
- #define MAX_MAP_LIGHTING 0x100000
- #define MAX_MAP_VISIBILITY 0x100000
-
- /* key / value pair sizes */
-
- #define MAX_KEY 32
- #define MAX_VALUE 1024
-
- /*============================================================================= */
-
-
- #define BSPVERSION 29
-
- typedef struct
- {
- int fileofs, filelen;
- } lump_t;
-
- #define LUMP_ENTITIES 0
- #define LUMP_PLANES 1
- #define LUMP_TEXTURES 2
- #define LUMP_VERTEXES 3
- #define LUMP_VISIBILITY 4
- #define LUMP_NODES 5
- #define LUMP_TEXINFO 6
- #define LUMP_FACES 7
- #define LUMP_LIGHTING 8
- #define LUMP_CLIPNODES 9
- #define LUMP_LEAFS 10
- #define LUMP_MARKSURFACES 11
- #define LUMP_EDGES 12
- #define LUMP_SURFEDGES 13
- #define LUMP_MODELS 14
-
- #define HEADER_LUMPS 15
-
- typedef struct
- {
- float mins[3], maxs[3];
- float origin[3];
- int headnode[MAX_MAP_HULLS];
- int visleafs; /* not including the solid leaf 0 */
- int firstface, numfaces;
- } dmodel_t;
-
- typedef struct
- {
- int version;
- lump_t lumps[HEADER_LUMPS];
- } dheader_t;
-
- typedef struct
- {
- int nummiptex;
- int dataofs[4]; /* [nummiptex] */
- } dmiptexlump_t;
-
- #define MIPLEVELS 4
- typedef struct miptex_s
- {
- char name[16];
- unsigned width, height;
- unsigned offsets[MIPLEVELS]; /* four mip maps stored */
- } miptex_t;
-
-
- typedef struct
- {
- float point[3];
- } dvertex_t;
-
-
- /* 0-2 are axial planes */
- #define PLANE_X 0
- #define PLANE_Y 1
- #define PLANE_Z 2
-
- /* 3-5 are non-axial planes snapped to the nearest */
- #define PLANE_ANYX 3
- #define PLANE_ANYY 4
- #define PLANE_ANYZ 5
-
- typedef struct
- {
- float normal[3];
- float dist;
- int type; /* PLANE_X - PLANE_ANYZ ?remove? trivial to regenerate */
- } dplane_t;
-
-
-
- #define CONTENTS_EMPTY -1
- #define CONTENTS_SOLID -2
- #define CONTENTS_WATER -3
- #define CONTENTS_SLIME -4
- #define CONTENTS_LAVA -5
- #define CONTENTS_SKY -6
-
- /* !!! if this is changed, it must be changed in asm_i386.h too !!! */
- typedef struct
- {
- int planenum;
- short children[2]; /* negative numbers are -(leafs+1), not nodes */
- short mins[3]; /* for sphere culling */
- short maxs[3];
- unsigned short firstface;
- unsigned short numfaces; /* counting both sides */
- } dnode_t;
-
- typedef struct
- {
- int planenum;
- short children[2]; /* negative numbers are contents */
- } dclipnode_t;
-
-
- typedef struct texinfo_s
- {
- float vecs[2][4]; /* [s/t][xyz offset] */
- int miptex;
- int flags;
- } texinfo_t;
- #define TEX_SPECIAL 1 /* sky or slime, no lightmap or 256 subdivision */
-
- /* note that edge 0 is never used, because negative edge nums are used for */
- /* counterclockwise use of the edge in a face */
- typedef struct
- {
- unsigned short v[2]; /* vertex numbers */
- } dedge_t;
-
- #define MAXLIGHTMAPS 4
- typedef struct
- {
- short planenum;
- short side;
-
- int firstedge; /* we must support > 64k edges */
- short numedges;
- short texinfo;
-
- /* lighting info */
- byte styles[MAXLIGHTMAPS];
- int lightofs; /* start of [numstyles*surfsize] samples */
- } dface_t;
-
-
-
- #define AMBIENT_WATER 0
- #define AMBIENT_SKY 1
- #define AMBIENT_SLIME 2
- #define AMBIENT_LAVA 3
-
- #define NUM_AMBIENTS 4 /* automatic ambient sounds */
-
- /* leaf 0 is the generic CONTENTS_SOLID leaf, used for all solid areas */
- /* all other leafs need visibility info */
- typedef struct
- {
- int contents;
- int visofs; /* -1 = no visibility info */
-
- short mins[3]; /* for frustum culling */
- short maxs[3];
-
- unsigned short firstmarksurface;
- unsigned short nummarksurfaces;
-
- byte ambient_level[NUM_AMBIENTS];
- } dleaf_t;
-
- /*============================================================================ */
-
- #ifndef QUAKE_GAME
-
- /* the utilities get to be lazy and just use large static arrays */
-
- extern int nummodels;
- extern dmodel_t dmodels[MAX_MAP_MODELS];
-
- extern int visdatasize;
- extern byte dvisdata[MAX_MAP_VISIBILITY];
-
- extern int lightdatasize;
- extern byte dlightdata[MAX_MAP_LIGHTING];
-
- extern int texdatasize;
- extern byte dtexdata[MAX_MAP_MIPTEX]; /* (dmiptexlump_t) */
-
- extern int entdatasize;
- extern char dentdata[MAX_MAP_ENTSTRING];
-
- extern int numleafs;
- extern dleaf_t dleafs[MAX_MAP_LEAFS];
-
- extern int numplanes;
- extern dplane_t dplanes[MAX_MAP_PLANES];
-
- extern int numvertexes;
- extern dvertex_t dvertexes[MAX_MAP_VERTS];
-
- extern int numnodes;
- extern dnode_t dnodes[MAX_MAP_NODES];
-
- extern int numtexinfo;
- extern texinfo_t texinfo[MAX_MAP_TEXINFO];
-
- extern int numfaces;
- extern dface_t dfaces[MAX_MAP_FACES];
-
- extern int numclipnodes;
- extern dclipnode_t dclipnodes[MAX_MAP_CLIPNODES];
-
- extern int numedges;
- extern dedge_t dedges[MAX_MAP_EDGES];
-
- extern int nummarksurfaces;
- extern unsigned short dmarksurfaces[MAX_MAP_MARKSURFACES];
-
- extern int numsurfedges;
- extern int dsurfedges[MAX_MAP_SURFEDGES];
-
-
-
- void LoadBSPFile (char *filename);
- void WriteBSPFile (char *filename);
- void PrintBSPFileSizes (void);
-
- #endif
-